თავი 2. ADO-ს ობიექტური მოდელი

ობიექტი Command
მონაცემების ბაზიდან მონაცემების მისაღებად და დასამუშავებლად შეიძლება გამოყენებულ იქნეს ობიექტი Command. მას ობიექტთან Connection  შედარებით შემდეგი უპირატესობანი გააჩნია:
  • მონაცემთა ერთობლიობის (ობიექტი Recordset) შექმნის გარეშე შესაძლებელია მონაცემების ბაზაში ცვლილებების განხორციელება. ეს აჩქარებს დაშორებულ სერვერზე არსებულ მონაცემების ბაზაში ცვლილებების შეტანის პროცესს. იმიტომ, რომ არ ხორციელდება სერვერიდან მონაცემების გადატანა კლიენტის მანქანაზე, იქ ცვლილებების ჩატარება და შემდეგ უკან დაბრუნება სერვერზე;
  • ობიექტს Command ობიექტის Connection განსვავებული პარამეტრები გააჩნია და მათი თვისებები საშუალებას იძლევა სრულად გამოვიყენოთ მისი შესაძლებლობანი.

ობიექტის Command შექმნა ობიექტის Connection შექმნის ანალოგიურია _ საჭიროა მისი გამოცხადება და განსაზღვრა. ამ ობიექტის გაღება აუცილებელი არ არის:
Dim br As New ADODB.Command
dim strkav As String
strkav = მონაცემების ბაზასთან დაკავშირების სტრიქონი
br.ActiveConnection = strkav

ობიექტით Command შესაძლებელია მონაცემების განახლება მონაცემთა ნაკრების შექმნის გარეშე და მონაცემების ამორჩევა მონაცემების ბაზიდან. ორივე შემთხვევაში გამოიყენება ობიექტის Command თვისება CommandText. იგი მონაცემების წყაროს მიერ შესასრულებელ ინსტრუქციას შეიცავს. ინსტრუქცია სტრიქონის ტიპის არის. იგი შეიძლება იყოს: SQL-ის ინსტრუქცია, ცხრილის სახელი, შენახული პროცე-დურა, წარმოდგენა, URL მისამართი.

მაგალითი 2.2 _ მონაცემების განახლება
Public Sub gan( )
‘ რეალიზაციის ფასის გაზრდა 20%-ით
Dim strkav As String
Dim br As New ADODB.Command
With br
      .ActiveConnection = CurrentProjectConnection
      .Commandtext = “Update tbsawyobi SET realfasi = realfasi + (realfasi * 0.2)”
      .Execute
End With
Set br = Nothing
End Sub

შენახული პროცედურის გაფორმება (კატალოგში შენახვა, გამოძახება) ობიექტით Command ხორციელდება. Access 2007-ში შენახული პროცედურის როლში შენახული შეკითხვა გამოდის. ჯგუფური ოპერაციების ამსახველი შეკითხვა შენახული პროცედურის სახით უნდა გაფორმდეს, რის შემდეგ მისი გამოძახება პროგრამიდან შეიძლება. ობიექტი Command   გამოყენებით გაფორმებული შენახული პროცედურა ინახება კატალოგში. კატალოგში შენახული პროცედურის სახელის გადარქმევა, ამოშლა და მოდიფიკაცია სპეციალური ბრძანებებით ხორციელდება. კატალოგში შეიძლება ფაქტობრივად ნებისმიერი რაოდენობის პროცედურა იქნეს შენახული. როგორც წესი შენახული პროცედურა პარამეტრული შეკითხვაა. შეკითხვის პარამეტრები (ამორჩევის პირობები) ფორმიდან მიეცემა. ობიექტის Command თვისებაში CommandText SQL ინსტრუქციის დაწერამდე ხორციელდება შეკითხვაში მონაწილე პარამეტრების აღწერა. პარამტრების ჩაწერის სინტაქსტი შემდეგია: <”><PARAMETERS><ინტერვალის ნიშანი><[><პარამეტრის სახელი><]><ინტერვალის ნიშანი><პარამეტრის ტიპი><,><ინტერვალის ნიშანი><[><პარამეტრის სახელი><]><ინტერვალის ნიშანი><პარამეტრის ტიპი><,>….<;><”>
br.CommandText = "PARAMETERS [V1] Short;" 
ობიექტის Command თვისება CommandText იწყება საკვანძო სიტყვით PARAMETERS, რომლის შემდეგ კვადრატულ ფრჩხილებში დაწერილია პარამეტრის სახელი V1 და მისი ტიპი Short. Short გვიჩვენებს, რომ ეს მონაცემი Integer-ია. ცხრილში მოცემულია  CommandText-ში პარამეტრების აღწერისას გამოყენებული მონაცემების ტიპების შესაბამისობა Access-ის მონაცემების ტიპებთან.


მაგალითი ობიექტით Command შენახული პროცედურის შექმნა და შენახვა კატალოგში
შევქმნათ მოდული და პროგრამა სახელით qula_jami ჩავწეროთ მასში. პროგრამა, რომ წვდომადი იყოს პროექტში არსებული ნებისმიერი ადგილიდან გავაფორმოთ იგი Public Sub 
Public Sub qula_jami()  
Dim cat As New ADOX.Catalog ’ ობიექტური ცვლადის cat გამოცხადება და ეგზემპლარის შექმნა
Dim br As New ADODB.Command ’ ობიექტური ცვლადის br   გამოცხადება და ეგზემპლარის შექმნა
cat.ActiveConnection = CurrentProject.Connection ’დაკავშირება მიმდინარე ბაზასთან
' ობიექტი Command თვისებაში CommandText დასაწყისში გამოცხადებულია პარამეტრი სახელით V1, რომლის ტიპია Short. შემდეგ დაწერილია SQL-ის ინსტრუქცია, რომლის განყოფილებაში HAVING გამოყენებულია ეს პარამეტრი. 
 br.CommandText = "PARAMETERS [V1] Short;" & _
" SELECT tbsua_gegma.sagani_kodi, tbsua_gegma.sual_tipi, Sum(tbsua_gegma.maq_qula) AS SumOfmaq_qula, Count(tbsua_gegma.maq_qula) AS CountOfmaq_qula" & _
" FROM tbsua_gegma" & _
" GROUP BY tbsua_gegma.sagani_kodi, tbsua_gegma.sual_tipi" & _
" HAVING (((tbsua_gegma.sagani_kodi)=[V1]))"
’ კატალოგში პროცედურის დამატება. პროცედურის სახელია jami_qula1. მიაქციეთ ყურადღება პროცედურის სახელი პროგრამის სახელისგან განსხვავდება. აქედან ჩანს, რომ ერთი პროგრამით რამდენიმე პროცადურა სეიძლება იქნეს აღწერილი და ჩაწერილი კატალოგში
cat.Procedures.Append ("jami_qula1"), br
  Set cat = Nothing
 End Sub

Public Sub amosla() 'კატალოგიდან შენახული პროცედურის ამოშლა
Dim cat As New ADOX.Catalog
Dim br As New ADODB.Command
cat.ActiveConnection = CurrentProject.Connection
cat.Procedures.Delete "jami_qula1"
End Sub   
პროცედურაში გამოცხადებული პარამტერი დაკავშირებული არ არის კონკრეტულ ფორმასთან და ცხადია ამ ფორმაზე დატანილ ველებთან. პროცედურის გამოძახება, დაკავშირება კონკრეტულ ფორმასთან ხორციელდება ამ პროცედურის შესრულების რეჟიმში.
    Dim can2 As New ADODB.Recordset
   Dim br As New ADODB.Command
Dim cat As New ADOX.Catalog 'კატალოგის ობიქტური ცვლადის გამოცხადება და ეგზემპლარის შექმნა
 cat.ActiveConnection = CurrentProject.Connection 'კატალოგის დაკავშირება პროექტთან
Set br = cat.Procedures("jami_qula1").Command ' კატალოგიდან შენახული პროცედურის გამოძახება
br.Parameters("[V1]").Value = Me.Vsagani ’პარამეტრის მნიშნელობის აღება კონკრეტულ ფორმაზე დატანილი ველიდან - Vsagani-დან
can2.Open br, ,adOpenStatic, adLockReadOnly, adCmdStoredProc 'ჩანაწერთა სიმრავლის გაღება და ამორჩევა შენახული პროცედურით. ყურადღება მიაქციეთ ამ სტრიქონის ბოლო პარამეტრის მნიშვნელობას. აქ წერია  adCmdStoredProc, რაც ნიშნავს, რომ ჩანაწერების ამორჩევის წყაროა შენახული პროცედურაა
ობიექტი Command შეიძლება უშუალოდ პროგრამაში იქნეს გამოყენებული
Private Sub Report_Open(Cancel As Integer)
Dim can As New ADODB.Recordset
Dim br As New ADODB.Command
br.ActiveConnection = CurrentProject.Connection
’პარამეტრული შეკითხვის ფორმირება
br.CommandText = "PARAMETERS [V1] Long;" & _
" SELECT * FROM tbgamocda_casabarebeli" & _
" WHERE uwyisi= [V1]"
’ პარამეტრის დაკავშირება ფორმასთან და მნიშვნელობის მიღება ველიდან სახელით Vauwyisi
br.Parameters("[V1]").Value = Form_Fgamocda.Vauwyisi
br.Execute ("[V1]")
’ ჩანაწერთა სიმრავლის გაღება
can.Open br, , adOpenStatic, adLockReadOnly, adCmdText
ოპერატორები
can.Close
br.Execute.Close
End Sub

შემდეგ გვერდზე იხ. სიობრივი მართვის ელემენტები
მონაცემის ტიპი Access-ში
შესასიტყვი მონაცემის ტიპი გამოყენებული შენახულ პროცედურაში  
Interger
Short
Text
Text
DateTime
DateTime
Date
Date
Long
Long